struct ListNode
{
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};


class Solution
{
    public:
    //返回链表倒数第二个节点
    ListNode* find(ListNode* head)
    {
        ListNode* res = head;
        
        while(res->next->next != nullptr)
        {
            res = res->next;
        }
        return res;
    }

    //返回链表倒数第一个节点
    ListNode* find_(ListNode* head)
    {
        ListNode* res = head;
        while(res->next)
        {
            res = res->next;
        }
        return res;
    }

    //遍历整个链表
    void find1(ListNode* head)
    {
        ListNode* curr = head;
        while(curr)
        {
            curr = curr->next;
        }
    }
};